package com.xianzhi.service.impl;

import com.xianzhi.bean.Ad;
import com.xianzhi.dao.AdDao;
import com.xianzhi.dto.AdDto;
import com.xianzhi.service.AdService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

@Service
public class AdServiceImpl implements AdService {
    @Autowired
    private AdDao adDao;

    @Value("${adImage.savePath}")
    private String adImageSavePath;

    @Value("${adImage.url}")
    private String adImageUrl;

    //查询获取
    @Override
    public List<AdDto> searchByPage(AdDto adDto) {
        List<AdDto> result = new ArrayList<>();
        Ad condition = new Ad();
        //如何将AdDto中的数据导入到Ad中
        BeanUtils.copyProperties(adDto,condition);
        //调用adDao中的方法
        List<Ad> adList = adDao.selectByPage(condition);
        for (Ad ad:adList) {
            AdDto adDtoTemp = new AdDto();
            //将Ad对象中的数据复制到adDtoTemp对象中
            BeanUtils.copyProperties(ad,adDtoTemp);
            //将adDtoTemp添加到result集合中
            result.add(adDtoTemp);
        }
        return result;
    }


    //添加
    @Override
    public boolean add(AdDto adDto) {

        //判断文件是否为空
        //如果不为空就可以获取到上传文件的名称(系统时间+源文件名)
        //File file = new File("服务器的路径"+"文件名");
        //将文件上传到服务器 adDto.getImgFile().transferTo(File);
        Ad ad = new Ad();
        ad.setTitle(adDto.getTitle());
        ad.setLink(adDto.getLink());
        ad.setWeight(adDto.getWeight());
        //判断文件是否为空
        if(adDto.getImgFile()!=null && adDto.getImgFile().getSize()>0){
            //如果文件存在我们要获取到上传文件的名称(格式为：系统时间_原始文件名)
            String fileName = System.currentTimeMillis()+"_"+adDto.getImgFile().getOriginalFilename();
            //要构造一下File对象(上传到服务器端的路径)
            File file = new File(adImageSavePath+fileName);
            File fileForder = new File(adImageSavePath);
            if(!fileForder.exists()){
                //创建一个文件夹
                fileForder.mkdirs();
            }
            try {
                //将文件上传到服务器
                adDto.getImgFile().transferTo(file);
                //还需要将文件名保存到数据库中
                ad.setImgFileName(fileName);
                //调用dao中的方法
                adDao.insert(ad);
                return true;
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return false;
    }


}
